from django import forms
from web.forms.bootstrap import BootStrapForm
from web import models


class IssuesModelForm(BootStrapForm, forms.ModelForm):
    class Meta:
        model = models.Issues
        fields = '__all__'
        exclude = ['project', 'creator', 'create_datetime', 'latest_update_datetime']
        widgets = {
            "assign": forms.Select(attrs={'class': "selectpicker", "data-live-search": "true"}),
            "attention": forms.SelectMultiple(
                attrs={'class': "selectpicker", "data-live-search": "true", "data-actions-box": "true"}),
            "parent": forms.Select(attrs={'class': "selectpicker", "data-live-search": "true"}),
            "priority":forms.Select(attrs={'class': "selectpicker"}),
            "status":forms.Select(attrs={'class': "selectpicker"}),
            "mode":forms.Select(attrs={'class': "selectpicker"}),
            "module":forms.Select(attrs={'class': "selectpicker"}),
        }

    def __init__(self, request, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 处理数据初始化

        # 1.获取当前项目的所有类型
        issues_type_list =[]
        issues_type_object_list =  models.IssuesType.objects.filter(
            project=request.tracer.project).values_list('id', 'title')
        issues_type_list.extend(issues_type_object_list)
        self.fields['issues_type'].choices = issues_type_list
        # self.fields['issues_type'].choices = models.IssuesType.objects.filter(
        #     project=request.tracer.project).values_list('id', 'title')
        # 2.获取当前项目的所有模块
        module_list = [('','没有选中任何项'),]
        module_object_list = models.Module.objects.filter(project=request.tracer.project).values_list('id','title')
        module_list.extend(module_object_list)
        self.fields['module'].choices = module_list
        #  3.指派和关注者
        #  数据库找到当前项目的参与者和创建者
        total_user_list = [(request.tracer.project.creator_id, request.tracer.project.creator.username),]
        project_user_list = models.ProjectUser.objects.filter(project=request.tracer.project).values_list('user_id','user__username')
        total_user_list.extend(project_user_list)
        self.fields['assign'].choices =[('','没有选中任何项'),] + total_user_list
        self.fields['attention'].choices = total_user_list

        #  4.  当前项目已创建的所有问题
        parent_list =[('','没有选中任何项'),]
        parent_object_list = models.Issues.objects.filter(project=request.tracer.project).values_list('id','subject')
        parent_list.extend(parent_object_list)
        self.fields['parent'].choices = parent_list


class IssuesReplyModelForm(forms.ModelForm):
    class Meta:
        model = models.IssuesReply
        fields = ['content', 'reply']


class InviteModelForm(BootStrapForm, forms.ModelForm):
    class Meta:
        model = models.ProjectInvite
        fields = ['period', 'count']



